package org.example.route.service;

import org.example.route.model.dto.*;
import org.example.route.model.vo.CarriageVO;
import org.example.route.model.vo.SeatShowVO;
import org.example.route.model.vo.TrainVO;

import java.util.List;

public interface TrainService {
    /**
     *
     * 添加一辆列车
     *
     * **/
    void add(TrainDTO trainDTO);

    /**
     *
     *
     * 展示出所有列车
     *
     * **/
    List<TrainVO> list(TrainQueryDTO trainQueryDTO);

    /**
     *
     * 改变列车的状态
     *
     * **/

    void changeStatus(TrainChangeStatusDTO trainChangeStatusDTO);

    /**
     *
     * 为某一辆列车添加车厢
     *
     * **/
    void addCarriage(TrainCarriageDTO trainCarriageDTO);

    /**
     *
     * 列举出所有的列车座位
     *
     * **/
    List<SeatShowVO> listTheSeat(SeatShowDTO seatShowDTO);

    /**
     *
     * 删除列车
     *
     * **/
    void delete(BaseRequest baseRequest);

    /**
     *
     * 修改列车
     *
     * **/
    void update(TrainDTO trainDTO);


    /**
     * 根据列车的等级和列车查询相关车厢信息
     **/
    List<CarriageVO> listCarriageByTrain(TrainGradeDTO trainGradeDTO);
}
